/*
 * Powered By XY
 * Since 2020
 */

package com.xy.biz.ts.dao;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.xy.biz.ts.domain.bo.TrainBO;
import com.xy.biz.ts.domain.po.TrainPO;
import com.xy.biz.ts.domain.query.TrainQuery;
import org.apache.ibatis.annotations.Param;

/**
 *
 *
 * @author wwj
 * @date 2021-4-1
 */
public interface TrainDao {

    /**
     * 保存
     *
     * @param trainPO
     */
    int saveTrain(TrainPO trainPO);

    /**
     * 保存多个
     *
     * @param collection
     */
    int saveAllTrain(Collection<TrainPO> collection);

    /**
     * 更新
     *
     * @param trainPO
     */
    int updateTrain(TrainPO trainPO);

    /**
     * 更新培训状态
     *
     * @param map
     */
    int changeStatus(@Param("map") Map<Integer, Set<Long>> map);

    /**
     * 更新考核状态
     *
     * @param trainId
     */
    int startExamination(Long trainId);

    /**
     * 删除
     *
     * @param trainId
     */
    int deleteTrain(Long trainId);

    /**
     * 查找一个
     *
     * @param trainId
     * @return
     */
    TrainPO getTrain(Long trainId);

    /**
     * 查找多条
     *
     * @param collection
     * @return
     */
    List<TrainPO> listTrainById(Collection<Long> collection);

    /**
     * 条件查找多条
     *
     * @param query 查找条件
     * @return
     */
    List<TrainPO> listTrain(TrainQuery query);

    /**
     * 条件查找多条
     *
     * @param query 查找条件
     * @return
     */
    List<TrainPO> listTrainId(TrainQuery query);

    /**
     * 条件统计个数
     *
     * @param query 查找条件
     * @return
     */
    int countTrain(TrainQuery query);

}
